import axios from 'axios'
import { Notify } from 'vant';
import { getToken,removeToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
axios.defaults.withCredentials = true;
axios.defaults.validateStatus = function(status) {
    return status >= 200 && status <= 500; // 默认的
};
// 创建axios实例
const request = axios.create({
    // axios中请求配置有baseURL选项，表示请求URL公共部分
    baseURL: process.env.VUE_APP_BASE_API,
    // 超时
    timeout: 30000
});
// request拦截器
request.interceptors.request.use(config => {
    // 是否需要设置 token
    const isToken = (config.headers || {}).isToken === false
    if (getToken() && !isToken) {
        config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
    }
    return config
}, error => {
    return Promise.reject(error)
});

// 响应拦截器
request.interceptors.response.use(res => {
    // 未设置状态码则默认成功状态
    const status = Number(res.status) || 200;
    // 获取错误信息
    const msg = res.data.msg || errorCode[status] || errorCode["default"];
    if (status===424||(status === 401 && (res.data.code===10412))){
        //无效token和令牌过期，去微信授权
        removeToken();
        window.location.reload();
        return res.data;
    }
    if (status !== 200 || res.data.code === 1) {
        Notify({
            message: msg,
            type: "danger"
        });
        return Promise.reject(new Error(message));
    }
    if (status===200 && res.data.code!==undefined && res.data.code!==200){
        Notify({
            message: msg,
            type: "danger"
        });
        return Promise.reject(new Error(message));
    }
    return res;
},
error => {
    return Promise.reject(new Error(error));
});
export default request
